package ru.chezclif.lern.conread.readers;
import java.util.List;
/**
 * Интерфейс для чтения, редактирования и сохранения
 * @author Vit
 *
 */
public interface PropertyReader {
	/**Чтение файла и сохранение настроек в хранилище даннных
	 * @param pseudoProtocolString строка, содержащая псевдопротокол и путь до оперируемого файла */
	public void readFile(String pseudoProtocolString);
	/**Сохранение в файл определенного формата настроек из хранилища данных 
	 * @param pseudoProtocolString строка, содержащая псевдопротокол и путь до оперируемого файла*/
	public void saveFile(String pseudoProtocolString);
	/** Получить значение настройки по ключу
	 * @param key ключ */
	public String getSetting(String key);
	/** Задать ключу значение
	 * @param key ключ
	 * @param value значение*/
	public void setSetting(String key, String value);
	/** Удалить одну настройку (ключ со значением)
	 * @param key ключ
	 * @param value значение*/
	public void removeSetting(String key, String value);
	/**Получить заглавный комментарий */
	public String getHeaderComment();
	/** Задать заглавный комментарий
	 * @param Comment Заглавный комментарий*/
	public void setHeaderComment(String comment);
	/**Получить конечный комментарий */
	public String getFooterComment();
	/**Задать конечный комментарий
	 * @param Comment Конечный комментарий*/
	public void setFooterComment(String comment);
	/**Получить коллекцию всех ключей из хранилища настроек
	 * @param localBufferForKeys коллекция для заполнения ее ключами*/
	public List<String> getKeys(List<String> localBufferForKeys);
	/**Получить коллекцию ключей находящихся в определенной субсекции
	 * @param localBufferForKeys коллекция для заполнения ее ключами*/
	public List<String> getSubsectionKeys(String sectionName, List<String> localBufferForSubsectionKeys);
	/** Получить коллекцию значений находящихся в определенной субсекции
	 * @param sectionName название секции до точки
	 * @param localBufferForSubsectionvalues коллекция для заполнения ее ключами из субсекции */
	public List<String> getSubsectionValues(String sectionName, List<String> localBufferForSubsectionvalues);
}
